モデルの作成、バリデーションの設定

class CreateCompanies < ActiveRecord::Migration[7.1]
  def change
    create_table :companies do |t|
      t.text :name, null: false
      t.date :founding_date
      t.timestamps
    end
  end
end
class Company < ApplicationRecord
  validates :name, presence: true
end
上の例では、Companyモデルをname(文字列)、founding_date(日付)フィールドで作成し、nameフィールドでは空白時にバリデーションを行っている例となっています。

コマンドプロンプトでプロジェクトのルートディレクトリに移動し、
rails generate model モデル名

と入力するとdb/migrate内にマイグレーション用のファイル、app/modelsフォルダにモデル名のファイルが作成されます。

db/migrate内にできたファイルでは、モデルのフィールドを定義しています。
t.フィールドの型 :フィールド名

の形式でフィールドを定義することができ、null: falseを追加すると必須フィールドになります。

app/models/モデル名のファイルでは紐づいたモデルとのリレーションの設定、バリデーションなどを記入することができます。
リレーションについては次のページで説明していきます。
validates :フィールド名, presence: true

のようにするとデータがないときに対するバリデーションを行うことができます。

空白ではなく、正規表現でバリデーションを行いたいときは、presence: trueの部分を
format: { with: /\A\d{3}-\d{4}\z/, message: "郵便番号を正しい形式で入力してください" }

のようにします。(上はここでは関係ないですが郵便番号の3桁数字-4桁数字になるようにしたバリデーション)
また,区切りで複数のバリデーションも行うことが可能となっています。

それぞれの定義が完了したら、プロジェクトのルートディレクトリで
rails db:migrate

と入力することでモデルが作成されます。

また、マイグレーションは以前の状態に戻すことができ、すべてのマイグレーションをリセットするときは
rails db:migrate:reset

と入力してください。

既定の回数分だけ戻したいときは
rails db:rollback STEP=既定の回数

の形式で記入してください。
直近のマイグレーションのみ取り消すときは
rails db:rollback STEP=1

となります。